package org.leetcode.easy.leetcode118;

import org.w3c.dom.ls.LSInput;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Solution {

    public List<List<Integer>> generate3(int numRows) {
        List<List<Integer>> res = new ArrayList<>();
        for (int i = 0; i < numRows; i++) {
            List<Integer> temp = new ArrayList<>();
            for (int j = 0; j <= i; j++) {
                if (j==0 || j==i){
                    temp.add(1);
                }else {
                    temp.add(res.get(i-1).get(j-1)+res.get(i-1).get(j));
                }
            }
            res.add(temp);
        }

        return res;
    }

    public List<List<Integer>> generate2(int numRows) {
        List<List<Integer>> res = new ArrayList<>();

        for (int i = 0; i < numRows; i++) {
            List<Integer> temp = new ArrayList<>();
            for (int j = 0; j <= i; j++) {
                if (j == 0 || j == i) {
                    temp.add(1);
                } else {
                    int num = res.get(i - 1).get(j - 1) + res.get(i - 1).get(j);
                    temp.add(num);
                }
            }

            res.add(temp);
        }

        return res;
    }

    //失败
    public List<List<Integer>> generate(int numRows) {

        Integer[][] dp = new Integer[numRows][numRows];

        for (int i = 0; i < numRows; i++) {
            dp[i][0] = 1;
        }

        for (int i = 1; i < numRows; i++) {
            for (int j = 1; j <= i; j++) {
                dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];
            }
        }

        List<List<Integer>> res = new ArrayList<>();

        for (int i = 0; i < numRows; i++) {
            List<Integer> list = Arrays.asList(dp[i]);
            list.remove(i);
            res.add(list);
        }

        return res;
    }

    public static void main(String[] args) {
        Solution solution = new Solution();

        List<List<Integer>> generate = solution.generate(3);
    }
}
